package demo4.controller;

import com.tedu.InputUtil;
import demo4.mapper.IUserMapper;
import demo4.mapper.UserMapper;
import demo4.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Scanner;

/**
 * Controller控制器，是MVC中的C（相当于前台接待）
 * 这个层级的类主要负责：与客户端交互，并转交给后面的业务层，并根据业务层处理的结果反馈给用户
 * 为了简化目前的操作，在当前案例中也处理业务的工作
 */
@Component
public class UserController {
    @Autowired
    private IUserMapper userMapper;
    public void start() {
        System.out.println("请选择对应的操作，输入序号");
        System.out.println("1：用户注册，2：登录，3：修改用户信息；4：展示用户列表；5：删除用户；6：再说");
        Scanner scanner = new Scanner(System.in);
        int num= Integer.parseInt(scanner.nextLine());
        switch (num) {
            case 5:
                deleteUser();
                break;
            case 4:
                ListUser();
                break;
            case 3:
                updateUser();
                break;
            case 1:
                regUser();
                break;
            case 2:
                loginUser();
                break;
            default:
                System.out.println("其他功能还在完善中，目前404");
                start();
        }
    }
    public void regUser() {
//        System.out.println("开始处理用户注册");
//        Scanner scanner = new Scanner(System.in);
//        System.out.println("请输入用户名");
//        String username = scanner.nextLine();
//        System.out.println("请输入密码");
//        String password = scanner.nextLine();
//        System.out.println("请输入昵称");
//        String nickname = scanner.nextLine();
//        System.out.println("请输入年龄");
//        int age = Integer.parseInt(scanner.nextLine());
//        User user = new User(null,username,password,nickname,age);
//        userMapper.insert(user);
        User user = InputUtil.getInputObject(new User());//范传奇写的jar
        //判断数据库是否存在该用户，调用方法，如果查到，返回一个对象，查不到返回null
        User user1=userMapper.selectByUsername(user.getUsername());
        if(user1!=null){
            System.out.println("用户名已存在！！！");
        }else {
            int num=userMapper.insert(user);
            System.out.println(num>0?"注册成功":"注册失败");
        }


    }
    public void loginUser() {
        //System.out.println("开始处理用户登录");
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入你的用户账号");
        String username=scanner.nextLine();
        System.out.println("请输入你的密码");
        String password=scanner.nextLine();
        //查询数据库中该用户的注册信息
        User user=userMapper.selectByUsername(username);
        if(user!=null){
            if(user.getPassword().equals(password)){
                System.out.println("登录成功");
            }else {
                System.out.println("密码错误");
            }
        }else {
            System.out.println("用户名不存在");
        }
    }

    public void updateUser() {
        //System.out.println("开始处理用户更新");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要修改的用户账号");
        String username = scanner.nextLine();
        System.out.println("请输入你要修改的密码");
        String password = scanner.nextLine();
        System.out.println("请输入你要修改的的昵称");
        String nickname = scanner.nextLine();
        System.out.println("请输入你药球盖的年龄");
        int age = Integer.parseInt(scanner.nextLine());
        User user = new User(null, username, password, nickname, age);
        int num = userMapper.update(user);
        System.out.println(num > 0 ? "更新成功" : "用户名无效");
    }
    public void ListUser() {
        System.out.println("开始处理用户列表");
        List<User> users = userMapper.selectAll();
        for (User user :users) {
            System.out.println(user);
        }
    }
    public void deleteUser() {
        System.out.println("开始处理用户删除");
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你要删除的用户账号");
        String username = scanner.nextLine();
        int num =userMapper.deleteByUsername(username);
        System.out.println(num>0?"删除成功":"没有此用户");
    }
}
